<?php

/*
 * Modelo: "session.php"
 * Copyright 2011 SISVOX.
 *
 * Licenciado bajo SISVOX, Version 1.0 (la "Licencia");
 * El codigo presente que compone este Software es propiedad unica y
 * exclusivamente de SISVOX, por lo tanto, usted no podrá utilizar este
 * archivo excepto en cumplimiento de la Licencia ofrecida por SISVOX.
 * Usted puede obtener una copia de la Licencia en:
 *
 *      Soluciones Integrales de Software Vox (SISVOX)
 *                 http://www.sisvox.com
 *
 *     - Carlos Calvo      <ccalvo@sisvox.com>
 *     - Andres Hernandez  <ahernandez@sisvox.com>
 *
 * A menos que sea requerido por la ley aplicable o se acuerde por escrito,
 * el software distribuido bajo la licencia se distribuye "TAL CUAL", CON
 * LAS GARANTIAS Y CONDICIONES expresadas en la "Licencia".
 */


class Session {
	
	/* Nombre de las Variables del Modelo (INFORMATIVO)
    // USUARIO
	+--------------------+-------------+------+-----+-------------------+-----------------------------+
	| Field              | Type        | Null | Key | Default           | Extra                       |
	+--------------------+-------------+------+-----+-------------------+-----------------------------+
	| login              | varchar(16) | NO   | PRI | NULL              |                             |
	| password           | varchar(50) | NO   |     | NULL              |                             |
	| nro_identificacion | int(11)     | NO   |     | NULL              |                             |
	| primer_nombre      | varchar(20) | NO   |     | NULL              |                             |
	| segundo_nombre     | varchar(20) | YES  |     | NULL              |                             |
	| primer_apellido    | varchar(20) | NO   |     | NULL              |                             |
	| segundo_apellido   | varchar(20) | YES  |     | NULL              |                             |
	| direccion          | text        | NO   |     | NULL              |                             |
	| cod_hab            | varchar(4)  | NO   |     | NULL              |                             |
	| tel_hab            | varchar(7)  | NO   |     | NULL              |                             |
	| cod_cel            | varchar(4)  | NO   |     | NULL              |                             |
	| tel_cel            | varchar(7)  | NO   |     | NULL              |                             |
	| correo             | varchar(50) | NO   |     | NULL              |                             |
	| fecha_creacion     | datetime    | NO   |     | NULL              |                             |
	| fecha_modificacion | timestamp   | NO   |     | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
	+--------------------+-------------+------+-----+-------------------+-----------------------------+
	
	// USUARIO_APLICACION
	+---------------+-------------+------+-----+---------+-------+
	| Field         | Type        | Null | Key | Default | Extra |
	+---------------+-------------+------+-----+---------+-------+
	| login         | varchar(16) | NO   | PRI | NULL    |       |
	| id_aplicacion | int(11)     | NO   |     | NULL    |       |
	| id_status     | char(1)     | NO   |     | NULL    |       |
	| permisologia  | text        | NO   |     | NULL    |       |
	+---------------+-------------+------+-----+---------+-------+
	
	// SMCP_USUARIO
	+--------------+-------------+------+-----+---------+-------+
	| Field        | Type        | Null | Key | Default | Extra |
	+--------------+-------------+------+-----+---------+-------+
	| login        | varchar(16) | NO   | PRI | NULL    |       |
	| id_rol       | int(11)     | NO   |     | NULL    |       |
	| permisologia | text        | NO   |     | NULL    |       |
	+--------------+-------------+------+-----+---------+-------+
	*/
	
    // Variable para los resultados de las Consultas
    private $respuesta;
	
	// Tablas del Modelo
	private $tdispositivo 			= "dispositivo";
	private $tusuario 				= "usuario";
	private $tusuario_aplicacion 	= "usuario_aplicacion";
	private $tsmcp_usuario 			= "smcp_usuario";
	
	
	// ==================================================================================================			
	//	FUNCION - INICIAR SESION DE USUARIO
	// ==================================================================================================
	
	public function iniciar_sesion( $login, $password, $device_uuid, $device_plataform, $id_municipio_base ) 
	{
        $this->retorno = array();
		
		$conexion 	= new EnlaceBD;
        $var 		= $conexion->conectar( $_SESSION['db_global_WS'] );
		
        if(!$conexion)
        {
            $this->retorno[0] = "N";
            $this->retorno[1] = "No se pudo Consultar el Usuario para Inciar Sesión (Problemas en la Conexión): ".$conexion->getLastMessage();
            return $this->retorno;
        }
        else
        {
        	// Verificamos el Dispositivo Movil
			$sql = "select d.id_dispositivo as id_dispositivo, 
						d.id_status as id_status 
					from ".$_SESSION['db_global_WS'].$_SESSION['schema_db_WS'].".$this->tdispositivo as d 
					where d.id_municipio_base = '$id_municipio_base' and 
						d.id_aplicacion = ".$_SESSION['id_aplicacion']." and 
						d.id_dispositivo = '$device_uuid' and 
						d.sistema_operativo = '$device_plataform'";
			
			$this->respuesta = $conexion->consultar($sql);
			
			$temparray = $this->respuesta->buscar_fila();
			
			// Si el Dispositivo Movil esta Registrado
			if ( $temparray['id_dispositivo'] == $device_uuid )
			{
				// Si el Dispositivo Movil esta ACTIVO
				if ( $temparray['id_status'] == "A" ) 
				{
					
					// Verificamos si el usuario Existe
					$sql = "select u.login as login 
							from ".$_SESSION['db_global_WS'].$_SESSION['schema_db_WS'].".$this->tusuario as u, 
								".$_SESSION['db_global_WS'].$_SESSION['schema_db_WS'].".$this->tusuario_aplicacion as ua, 
								".$_SESSION['db_smcp_WS'].$_SESSION['schema_db_WS'].".$this->tsmcp_usuario as lu  
							where u.login = '$login' and 
								u.login = ua.login and 
								ua.id_aplicacion = ".$_SESSION['id_aplicacion']." and 
								u.login = lu.login";
					
					$this->respuesta = $conexion->consultar($sql);
					
					$temparray = $this->respuesta->buscar_fila();
					
					if ( $temparray['login'] != "" ) {
					
						$login_existe = $temparray['login'];
						
						$sql = "select u.login as login, 
								u.password as password, 
								u.id_tipo_identificacion as id_tipo_identificacion, 
								u.nro_identificacion as nro_identificacion, 
								u.primer_nombre as primer_nombre, 
								u.segundo_nombre as segundo_nombre, 
								u.primer_apellido as primer_apellido, 
								u.segundo_apellido as segundo_apellido, 
								ua.id_status as id_status, 
								lu.dispositivo as dispositivo 
							from ".$_SESSION['db_global_WS'].$_SESSION['schema_db_WS'].".$this->tusuario as u, 
								".$_SESSION['db_global_WS'].$_SESSION['schema_db_WS'].".$this->tusuario_aplicacion as ua, 
								".$_SESSION['db_smcp_WS'].$_SESSION['schema_db_WS'].".$this->tsmcp_usuario as lu  
							where u.login = '$login' and 
								u.password = '$password' and 
								u.login = ua.login and 
								ua.id_aplicacion = ".$_SESSION['id_aplicacion']." and 
								u.login = lu.login";
						
						$this->respuesta = $conexion->consultar($sql);
						
						$temparray = $this->respuesta->buscar_fila();
					
						if(!temparray)
						{
							$this->retorno[0] = "N";
							$this->retorno[1] = "No se pudo Consulta el Usuario para Inciar Sesión: ".$conexion->getLastMessage();
							$this->retorno[2] = "N";
						}
						else
						{
							if ( $temparray['login'] != "" ) 
							{
								$_xml="<usuario>";
								$_xml.="<id_dispositivo>$device_uuid</id_dispositivo>";
								$_xml.="<id_status_dispositivo>A</id_status_dispositivo>";
								$_xml.="<login>".utf8_encode($temparray['login'])."</login>";
								$_xml.="<password>".utf8_encode($temparray['password'])."</password>";
								$_xml.="<id_status>".$temparray['id_status']."</id_status>";
								$_xml.="<dispositivo>".$temparray['dispositivo']."</dispositivo>";
								$_xml.="</usuario>";
								
								$this->retorno[0] = "S";
								$this->retorno[1] = $_xml;
								
								if ( $temparray['id_status'] == "A" && $temparray['dispositivo'] == "SI" ) 
								{
									$this->retorno[2] = "S";
								}
								else
								{
									$this->retorno[2] = "N";
								}
								
							}
							else
							{
								$_xml="<usuario>";
								$_xml.="<id_dispositivo>$device_uuid</id_dispositivo>";
								$_xml.="<id_status_dispositivo>A</id_status_dispositivo>";
								$_xml.="<login>".$login_existe."</login>";
								$_xml.="<password></password>";
								$_xml.="<id_status></id_status>";
								$_xml.="<dispositivo></dispositivo>";
								$_xml.="</usuario>";
								
								$this->retorno[0] = "S";
								$this->retorno[1] = $_xml;
								$this->retorno[2] = "N";
							}
						}
					}
					else
					{
						$_xml="<usuario>";
						$_xml.="<id_dispositivo>$device_uuid</id_dispositivo>";
						$_xml.="<id_status_dispositivo>A</id_status_dispositivo>";
						$_xml.="<login></login>";
						$_xml.="<password></password>";
						$_xml.="<id_status></id_status>";
						$_xml.="<dispositivo></dispositivo>";
						$_xml.="</usuario>";
						
						$this->retorno[0] = "S";
						$this->retorno[1] = $_xml;
						$this->retorno[2] = "N";
					}
			
				}
				else if ( $temparray['id_status'] == "I" ) 
				{
					$_xml="<usuario>";
					$_xml.="<id_dispositivo>$device_uuid</id_dispositivo>";
					$_xml.="<id_status_dispositivo>I</id_status_dispositivo>";
					$_xml.="<login></login>";
					$_xml.="<password></password>";
					$_xml.="<id_status></id_status>";
					$_xml.="<dispositivo></dispositivo>";
					$_xml.="</usuario>";
					
					$this->retorno[0] = "S";
					$this->retorno[1] = $_xml;
					$this->retorno[2] = "N";
				}
			}
			else 
			{
				$_xml="<usuario>";
				$_xml.="<id_dispositivo></id_dispositivo>";
				$_xml.="<id_status_dispositivo></id_status_dispositivo>";
				$_xml.="<login></login>";
				$_xml.="<password></password>";
				$_xml.="<id_status></id_status>";
				$_xml.="<dispositivo></dispositivo>";
				$_xml.="</usuario>";
				
				$this->retorno[0] = "S";
				$this->retorno[1] = $_xml;
				$this->retorno[2] = "N";
			}
			
			$conexion->desconectar();
			return $this->retorno;
		}
    }
}
?>